/**
 * 儿童安全锁命令类
 */
import BaseCommand from './baseCommand';

class ChildLockCommand extends BaseCommand {
  static CMD = 0x0B;  // 命令类型：设置儿童安全锁

  /**
   * 创建设置儿童安全锁命令
   * @param {Object|boolean} params - 命令参数或直接的状态值
   * @returns {Uint8Array} 命令帧
   */
  static createCommand(params) {
    // 支持两种调用方式：直接传布尔值或包含state属性的对象
    let state;
    if (typeof params === 'boolean') {
      state = params;
    } else if (params && typeof params.state === 'boolean') {
      state = params.state;
    } else {
      console.error('[儿童锁] 参数无效:', params);
      return null;
    }

    console.log('[儿童锁] 创建命令, 状态:', state);
    const data = new Uint8Array([state ? 1 : 0]);
    return this.packFrame(this.CMD, data);
  }

  /**
   * 解析响应数据
   * @param {Uint8Array} frame - 完整的响应帧
   * @returns {Object|null} 解析结果
   */
  static parseResponse(frame) {
    console.log('[儿童锁] 开始解析响应');
    
    const baseResult = this.parseBaseFrame(frame);
    if (!baseResult) return null;

    if (baseResult.cmd !== this.CMD) {
      console.warn('[儿童锁] 命令类型不匹配');
      return null;
    }

    if (baseResult.data.length < 1) {
      console.warn('[儿童锁] 数据长度不正确');
      return null;
    }

    const success = baseResult.data[0] === 1;
    console.log('[儿童锁] 解析成功, 结果:', success);
    return { success };
  }
}

export default ChildLockCommand; 